package com.zhuss.core.auth;
import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;

import com.zhuss.exception.WpsException;


@WebFilter(filterName = "myFilter",urlPatterns = "/*")
public class HttpServletRequestReplacedFilter implements Filter {
	@Override
	public void destroy() {
 
	}
 
	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
 
		ServletRequest requestWrapper = null;
		if (request instanceof HttpServletRequest) {
			HttpServletRequest httpServletRequest = (HttpServletRequest) request;
			String method = httpServletRequest.getMethod().toUpperCase();
			String contentType = httpServletRequest.getContentType();
			if ("POST".equals(method)
					&& 
					("application/json".equalsIgnoreCase(contentType)
					|| "application/json;charset=UTF-8".equalsIgnoreCase(contentType))
					) {
				try {
					requestWrapper = new BodyReaderHttpServletRequestWrapper(
							(HttpServletRequest) request);
				} catch (WpsException e) {
					e.printStackTrace();
				}
			}
		}
 
		if (requestWrapper == null) {
			chain.doFilter(request, response);
		} else {
			chain.doFilter(requestWrapper, response); 
		}
	}
 
	@Override
	public void init(FilterConfig arg0) throws ServletException {
 
	}
 
}